import { type HostEnum } from "~/utils";
import { fetchInitGameData, getGameDataSource } from "../utils/fun";
import configJson from "@/public/json/config.json";

/** 用于最终客户端渲染-服务端全局数据 */
let gameJsonDataSource: any = {};

/** 导出供其他地方使用的获取缓存数据的函数 */
export const getServerCache = () => {
  return { gameJsonDataSource };
};

export default defineNitroPlugin(() => {
  try {
    console.log("开始初始化服务端数据...");
    const gameDataJson = fetchInitGameData();
    for (const key in configJson) {
      gameJsonDataSource[key] = getGameDataSource({
        hostName: key as HostEnum,
        gameJson: gameDataJson,
        configJson,
      });
    }
    console.log("服务端启动成功，可以开始访问。");
  } catch (error) {
    throw new Error("服务启动失败：无法获取必要的初始化数据。");
  }
});
